<?php
use think\facade\Session;
use think\facade\Request;
use think\facade\Config;
use think\facade\Cache;
use think\facade\Db;

    /**
     * 间隔时间段格式化
     * @param int $time 时间戳
     * @param string $format 格式 【d：显示到天 i显示到分钟 s显示到秒】
     * @return string
     */
    function time_trans($time, $format = 's')
    {   $time = strtotime($time);
        $now = time();
        $diff = $now - $time;

        if ($diff < 60) {
            return $diff . '秒前';
        } else if ($diff < 3600) {
            return floor($diff / 60) . '分钟前';
        } else if ($diff < 86400) {
            return floor($diff / 3600) . '小时前';
        } else if ($diff < 86400*2) {
            return '昨天';
        } else if ($diff < 86400*3) {
            return floor($diff / 3600 / 24) . '天前';
        } else if ($diff < 86400*4) {
            return floor($diff / 3600 / 24) . '天前';
        } else if ($diff < 86400*5) {
            return floor($diff / 3600 / 24) . '天前';
        } else if ($diff < 86400*6) {
            return floor($diff / 3600 / 24) . '天前';
        } else if ($diff < 86400*7) {
            return floor($diff / 3600 / 24) . '天前';
        } else if ($diff < 86400*8) {
            return floor($diff / 3600 / 24) . '天前';
        }

        switch ($format) {
            case 'd':
                $show_time = date('Y-m-d', $time);
                break;
            case 'i':
                $show_time = date('Y-m-d H:i', $time);
                break;
            case 's':
                $show_time = date('Y-m-d H:i:s', $time);
                break;
        }
        return $show_time;
    }

/**
 * 数组转换为数据集对象
 * @param array $resultSet 数据集数组
 * @return \think\model\Collection|\think\Collection
 */
function collection($resultSet)
{
    $item = $resultSet;
    if ($item instanceof Model) {
        return \think\model\Collection::make($resultSet);
    } else {
        return \think\Collection::make($resultSet);
    }
}
//获取管理员ID
function AdminId()
{
    $info = session('admin_auth.username');
    return $info;
}
//获取用户ID
function UserId()
{
    $info = session('user_auth.username');
    return $info;
}

//获取url参数
function get_params($key = "")
{
    return Request::instance()->param($key);
}
//获取url参数
   function getMyUrl()
        {
          $protocol = (!empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) == 'on' || $_SERVER['HTTPS'] == '1')) ? 'https://' : 'http://';
          $server = substr(get_config('route.default_return_type'), 2,1) . '.' . explode('.',Request::domain())[1] . '.' . explode('.',Request::domain())[2];
          return $protocol.$server;
        }

//读取文件配置
function load_config($key)
{
    return Config::load($key);
}
//读取文件配置
function get_config($key)
{
    return Config::get($key);
}
/**
 * 过滤数组元素前后空格 (支持多维数组)
 * @param $array 要过滤的数组
 * @return array|string
 */
function trim_array_element($array)
{
    if (!is_array($array))
        return trim($array);
    return array_map('trim_array_element', $array);
}

    //自定义函数：time2string($second) 输入秒数换算成多少天/多少小时/多少分/多少秒的字符串
        function maktimes($second){
            $day = floor($second/(3600*24));
            $second = $second%(3600*24);//除去整天之后剩余的时间
            $hour = floor($second/3600);
            $second = $second%3600;//除去整小时之后剩余的时间 
            $minute = floor($second/60);
            $second = $second%60;//除去整分钟之后剩余的时间 
            //返回字符串
            return $day.'天'.$hour.'小时'.$minute.'分'.$second.'秒';
        }

/**
 * @param 日期与时间戳相互转换
*/

function turn_time($name)
{ 
    return is_numeric($name)?date('Y-m-d',$name):strtotime(date($name));
        
        
} 
// 返回数据

function __($name)
{ 
    $data = Config::load('admin_code', 'set_code');
       return $data[$name];
} 

/**
 * 系统配置
 */
function sys_set($field)
{
    $data = get_system('config_sms');
    return $data[$field];
}
/**
 * 系统配置
 */
function get_system($field)
{
    $data = \app\lnadmin\model\admin\System::where('key',$field)->cache($field)->find()['jdata'];
    return $data;
}
//网站信息
function seo($type)
{
    $website = get_system('config_system_settings');
    return $website[$type];
}  
/**
 * 验证密码长度
 * @param string $password 需要验证的密码
 * @param int $min 最小长度
 * @param int $max 最大长度
 */
function check_password($password, $min, $max)
{
    if (strlen($password) < $min || strlen($password) > $max) {
        return false;
    }
    return true;
}
/**
 * 格式化字节大小
 * @param  number $size      字节数
 * @param  string $delimiter 数字和单位分隔符
 * @return string            格式化后的带单位的大小
 */
function format_bytes($size, $delimiter = '') {
    $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');
    for ($i = 0; $size >= 1024 && $i < 5; $i++) $size /= 1024;
    return round($size, 2) . $delimiter . $units[$i];
}

    function getFilesizeAttr($value)
    {
        return format_bytes($value);
    }
/**
 * 把json字符串转数组
 * @param json $p
 * @return array
 */
function json_to_array($p)
{
    if (mb_detect_encoding($p, array('ASCII', 'UTF-8', 'GB2312', 'GBK')) != 'UTF-8') {
        $p = iconv('GBK', 'UTF-8', $p);
    }
    return json_decode($p, true);
}

/**
 * 获取随机位数数字
 * @param  integer $len 长度
 * @return string
 */
function rand_number($len = 6)
{
    return substr(str_shuffle(str_repeat('2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY', 10)), 0, $len);
    //str_shuffle()随机地打乱字符串中的所有字符
    //str_repeat('0123456789', 10)把字符串 "'0123456789'" 重复 10 次：
}

/**
 * 配置值解析成数组
 * @param string $value 配置值
 * @return array|string
 */
function parse_attr($value)
{
    if (is_array($value)) {
        return $value;
    }
    $array = preg_split('/[,;\r\n]+/', trim($value, ",;\r\n"));
    if (strpos($value, ':')) {
        $value = array();
        foreach ($array as $val) {
            list($k, $v) = explode(':', $val);
            $value[$k] = $v;
        }
    } else {
        $value = $array;
    }
    return $value;
}

/**
 * 数组层级缩进转换
 * @param array $array 源数组
 * @param int $pid
 * @param int $level
 * @return array
 */
function list_to_level($array, $pid = 0, $level = 1)
{
    static $list = [];
    foreach ($array as $k => $v) {
        if ($v['pid'] == $pid) {
            $v['level'] = $level;
            $list[]     = $v;
            unset($array[$k]);
            list_to_level($array, $v['id'], $level + 1);
        }
    }
    return $list;
}

/**
 * 把返回的数据集转换成Tree
 * @param array $list 要转换的数据集
 * @param string $pid parent标记字段
 * @param string $level level标记字段
 * @return array
 * @author 麦当苗儿 <zuojiazi@vip.qq.com>
 */
function list_to_tree($list, $pk = 'id', $pid = 'pid', $child = 'children', $root = 0)
{
    // 创建Tree
    $tree = array();
    if (is_array($list)) {
        // 创建基于主键的数组引用
        $refer = array();
        foreach ($list as $key => $data) {
            $refer[$data[$pk]] = &$list[$key];
        }
        foreach ($list as $key => $data) {
            // 判断是否存在parent
            $parentId = $data[$pid];
            if ($root == $parentId) {
                $tree[] = &$list[$key];
            } else {
                if (isset($refer[$parentId])) {
                    $parent           = &$refer[$parentId];
                    $parent[$child][] = &$list[$key];
                }
            }
        }
    }
    return $tree;
}


     //判断是否是手机端
    function ishone()
    {
    return request()->isMobile();
      
    } 